package com.bestcem.xm.ticket.controller.vo.ticket.template;

import com.bestcem.xm.common.core.sql.ConditionDataConverter;
import com.bestcem.xm.common.core.uitls.DateUtil;
import com.bestcem.xm.ticket.entity.mongo.TicketTemplateV2;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.CollectionUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * 模板分页接口VO
 *
 * @author ympan <yuming.pan@idiaoyan.com>
 * @version v2.3
 * @date 2021/9/2 15:28
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GetTemplateVO implements Serializable {
    /**
     * 当前页数
     */
    private Integer page;

    /**
     * 模板行信息
     */
    private List<TicketTemplateV2VO> rows;

    /**
     * 带条件type的总数
     */
    private Long total;

    /**
     * 不带条件type的总数
     */
    @JsonProperty(value = "abs_total")
    private Long absTotal;

    public void addEntityToVo(List<TicketTemplateV2> ticketTemplateV2list, long total, Integer page, long absTotal) {
        this.total = total;
        this.page = page;
        this.absTotal = absTotal;
        rows = new ArrayList<>();
        if (!CollectionUtils.isEmpty(ticketTemplateV2list)) {
            ticketTemplateV2list.forEach(ticketTemplateV2 -> {
                if (Objects.nonNull(ticketTemplateV2)) {
                    TicketTemplateV2VO ticketTemplateV2VO = ticketTemplateV2ToTicketTemplateV2Vo(ticketTemplateV2);
                    rows.add(ticketTemplateV2VO);
                }
            });
        }
    }

    /**
     * ticketTemplateV2 to TicketTemplateV2VO
     *
     * @param ticketTemplateV2 模板实体
     * @return 模板分页查询VO
     * @author ympan <yuming.pan@idiaoyan.com>
     * @date 15:29 2021/9/8
     */
    private TicketTemplateV2VO ticketTemplateV2ToTicketTemplateV2Vo(TicketTemplateV2 ticketTemplateV2) {
        TicketTemplateV2VO ticketTemplateV2Vo = new TicketTemplateV2VO();
        ticketTemplateV2Vo.setId(ticketTemplateV2.getId());
        ticketTemplateV2Vo.setType(ticketTemplateV2.getType());
        ticketTemplateV2Vo.setName(ticketTemplateV2.getName());
        ticketTemplateV2Vo.setCreator(ticketTemplateV2.getCreator());
        ticketTemplateV2Vo.setUpdateTime(DateUtil.convertDteToString(ticketTemplateV2.getUpdatedDate(), ConditionDataConverter.DATETIME_FORMAT1));
        ticketTemplateV2Vo.setUsed(ticketTemplateV2.getUsed());
        ticketTemplateV2Vo.setSeq(ticketTemplateV2.getSeq());
        return ticketTemplateV2Vo;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class TicketTemplateV2VO implements Serializable {
        /**
         * 模板id
         */
        private String id;

        /**
         * 模板类型（1-详情，2-处理
         */
        private Integer type;

        /**
         * 模板名称
         */
        private String name;

        /**
         * 创建人
         */
        private String creator;

        /**
         * 最近修改时间
         */
        @JsonProperty("update_time")
        private String updateTime;

        /**
         * 是否被使用， 1-被使用，2-未被使用
         */
        private Integer used;

        /**
         * seq 默认模板是0，在创建模板的时候需要穿进来0，不传默认普通模板1
         */
        private Integer seq = 1;
    }
}
    